//package com.baizhi.exceptions;
//
//import com.baizhi.ExceprtionCodeEnum;
//import com.baizhi.vo.R;
//import org.springframework.validation.BindException;
//import org.springframework.validation.BindingResult;
//import org.springframework.validation.FieldError;
//import org.springframework.web.bind.annotation.ControllerAdvice;
//import org.springframework.web.bind.annotation.ExceptionHandler;
//import org.springframework.web.bind.annotation.RestControllerAdvice;
//
//import javax.validation.ConstraintViolationException;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * 全局异常捕获类: 捕获整个项目中所有的异常
// * @RestControllerAdvice 声明当前类为一个全局异常捕获
// * @ControllerAdvice
// */
//@RestControllerAdvice
//public class ExceptionControllerAdvice {
//
////    需声明捕获哪个异常
//    /**
//     * 捕获单个参数校验的异常：ConstraintViolationException
//     * 1001
//     * 1002
//     * 1003
//     */
//    @ExceptionHandler(ConstraintViolationException.class)
//    public R getConstraintViolationException(ConstraintViolationException e){
//        String message = e.getMessage();
//        return R.error(
//                ExceprtionCodeEnum.VALID_ERROR.getCode(),
//                ExceprtionCodeEnum.VALID_ERROR.getMsg()
//        );
//    }
//
//    /**
//     * 实体类参数校验的异常捕获
//     */
//    @ExceptionHandler(BindException.class)
//    public R getBindException(BindException e){
//        BindingResult result = e.getBindingResult();
//        Map map = new HashMap();
//        if (result.hasErrors()) {
//            for (FieldError fieldError : result.getFieldErrors()) {
//                map.put(fieldError.getField(),fieldError.getDefaultMessage());
//            }
//        }
//        return R.error().put("data",map);
//    }
//
//    @ExceptionHandler(RuntimeException.class)
//    public R getRuntimeException(RuntimeException e){
//        String message = e.getMessage();
//        return R.error(message);
//    }
//
//
//}
